Написание представления, позволяющего пользователю добавлять связанные данные для клиента, например, комментарии; на одной странице

#python #django #view #model

#python #django #Вид #Модель

Вопрос:

У меня есть рабочие модели, формы, представления и URL-адреса для приложения django CRUD, управляющего функциями клиентов для бизнеса. Кажется, я просто не могу понять, как написать представление, позволяющее пользователю добавлять комментарии или другие данные, относящиеся к клиенту и хранящиеся в других моделях, используя одно представление и шаблон.

Так, например; для клиента a, все комментарии для клиента a с возможностью добавления, изменения и т.д. и то же самое для других связанных моделей.

Я понимаю, как это сделать для одного, я смогу добиться быстрого прогресса. (здесь программист старой школы)

Вот с чем я работаю — это просто.

Модели

 class Emergency(models.Model):

    # Fields
    name = CharField(null = False, blank = False, max_length=60)
    address = TextField(blank=True, null=True, help_text='Street and town', verbose_name='Address')
    telephone = CharField(blank=False, null=False, unique= True, max_length=20)
    relationship = CharField(choices=(('P',  'Parent'),('S',  'Son'),('D',  'Daughter'),('R',  'Relative'),('L',  'Partner')),max_length = 1,default='R')


    class Meta:
        ordering = ('-pk',)

    def __unicode__(self):
        return u'%s' % self.pk

    def get_absolute_url(self):
       return reverse('conform_emergency_detail', args=(self.pk,))

    def get_update_url(self):
        return reverse('conform_emergency_update', args=(self.pk,))


class Client(models.Model):

    # Fields
    surname = CharField(null = False, blank = False, max_length=30)
    name = CharField(null = False, blank = False, max_length=60)

    # Relationship Fields
    emergencycontact = models.ForeignKey(Emergency, on_delete=models.CASCADE, name = 'Emergency Contact')

    class Meta:
        ordering = ('-pk',)

    def __unicode__(self):
        return u'%s' % self.pk

    def get_absolute_url(self):
        return reverse('conform_client_detail', args=(self.pk,))

    def get_update_url(self):
        return reverse('conform_client_update', args=(self.pk,))


class Clientnotes(models.Model):

    # Fields
    slug = AutoSlugField(populate_from='name', blank=True)
    created = DateTimeField(auto_now_add=True, editable=False)
    last_updated = DateTimeField(auto_now=True, editable=False)
    note = CharField(blank=False, null=False, max_length= 300 )

    # Relationship Fields
    modified_by = models.ForeignKey(User, related_name='clientnotes_modified_by', on_delete=models.CASCADE, name= 'Changed by')
    clientnotes = models.ManyToManyField(Client, name = 'Clients notes')

    class Meta:
        ordering = ('-created',)

    def __unicode__(self):
        return u'%s' % self.slug

    def get_absolute_url(self):
        return reverse('conform_clientnotes_detail', args=(self.slug,))

    def get_update_url(self):
        return reverse('conform_clientnotes_update', args=(self.slug,))
 

ФОРМЫ

 class ClientForm(forms.ModelForm):
    class Meta:
        model = Client
        fields = ['surname', 'name']

class ClientnotesForm(forms.ModelForm):
    class Meta:
        model = Clientnotes
        readonly_fields = ['slug', 'modified_by']
        fields = ['note']
 

число просмотров

 class ClientListView(ListView):
    model = Client


class ClientCreateView(CreateView):
    model = Client
    form_class = ClientForm


class ClientDetailView(DetailView):
    model = Client


class ClientUpdateView(UpdateView):
    model = Client
    form_class = ClientForm
 

ИМЕНА ШАБЛОНОВ

 client_detail.html
client_form.html
client_list.html
 

У меня есть простые представления, формы и шаблоны для перечисления, просмотра деталей и добавления, и все это работает хорошо — за исключением связанных моделей, потому что я не могу добавить обе модели одновременно. Мне нужно простое понятное руководство simpletons с тем, что я предоставил, чтобы оно встало на место.

Комментарии:

1. Добро пожаловать в SO Cameron Duodu! Не могли бы вы немного конкретнее сформулировать, в чем заключается ваш вопрос?

2. Спасибо за радушный прием. Я думаю, что мой джанго слаб. Мне нужно представление, которое позволит мне добавлять данные для клиента, такие как комментарии клиента и экстренный контакт — для данного клиента. Возможно, я все еще мыслю по-старому, но, кажется, я не понимаю, как это сделать в одном представлении. Вы можете помочь?

3. К сожалению, я мало что знаю о Django, поэтому я не очень помогаю. Предоставленная вами информация поможет другим!

4. Я думаю, вам нужно что-то, что использует внешний ключ модели пользователя? Так что отображаются только сведения, относящиеся к этому пользователю. Я прав?

5. Да, это верно. Я хочу показывать, обновлять только комментарии и т. Д. Только для конкретного пользователя.