Значение Django Multi для ModelMultipleChoiceField - PullRequest
0 голосов
/ 09 июня 2018

models.py

class User(models.Model):
    id = models.CharField(max_length=255)
    name = models.CharField(max_length=255)
    desc = models.TextField()
    created_at = models.DateTimeField(auto_now=True)
    updated_at = models.DateTimeField(auto_now_add=True, null=True)

    def __str__(self):
        return self.user.name

my forms.py

class PostsForm(forms.ModelForm):
    user = forms.ModelMultipleChoiceField(
        queryset=User.objects.all()
        )
    class Meta:
        model = Posts
        fields = '__all__'

В моем коде выше моя форма выглядит следующим образом:

+------------+
|Select    + |
+------------+
|John Doe    |
|Jessica     |
|Jessica     |
|Alex Joe    |
+------------+

Но это не то, что мне нужно, поскольку возможно множественное имя, и я знаю, что значение взято из def __str__ в моей модели.

Как добавить еще один str поэтому на моем поле будет:

+---------------------+
|Select             + |
+---------------------+
| 012931 - John Doe   |
| 012932 - Jessica    |
| 012933 - Jessica    |
| 012934 - Alex Joe   |
+---------------------+

Содержит идентификатор + имя при раскрытии или другую информацию.

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

В классе User вы должны добавить методы, указанные ниже:

def __unicode__(self):
    return "{} - {}".format(self.id, self.name)

def __str__(self):
    return "{} - {}".format(self.id, self.name)

ПРИМЕЧАНИЕ : нет необходимости в __unicode__() при использовании Python3.x.

0 голосов
/ 09 июня 2018

В User модели на __str__ вы можете сделать, как описано в Документ .

def __str__(self):
    return "{} - {}".format(self.id, self.user.name)

Вот пример self.id, вы можете получить любое значениетам вроде self.name и т. д.

...