Как разрешить редактирование отношения «многие ко многим» в админ-панели django - PullRequest
0 голосов
/ 27 октября 2011

Иметь определение класса, которое выглядит примерно так

class someClass(models.Model):
    field1 = models.ForeignKey('other_app.field4')
    field2 = models.ManyToManyField('other_app.field5')
    variable_name  = [1-char choices]
    field3 = models.CharField(max_length=1, choices=variable_name, blank=True)

Когда я пытаюсь отредактировать этот класс в админ-панели, я получаю:

TypeError at /admin/[app]/[someClass]/add/

Предположим, что это нужно сделатьс полем ManytoMany какие-нибудь очевидные обходные пути?


ОБНОВЛЕНИЕ : Хорошо, поэтому я выяснил проблему: код, который написал мой партнер, имел итеративную функцию __str__:

def __str__(self):
    str_rep = '%s for ' % (self.field1)
    for p in self.field2:
        str_rep += str(p) + self.field3

Есть идеи, как переписать это?

1 Ответ

1 голос
/ 30 октября 2011

В будущем попробуйте опубликовать фактическую трассировку и соответствующие строки кода. Это показало бы нам, где именно этот код ломался.

field2 не повторяется. Вам нужно получить QuerySet от вашего ManyRelatedManager, позвонив по номеру all() или filter(...).

https://docs.djangoproject.com/en/dev/topics/db/queries/#many-to-many-relationships

def __str__(self):
    str_rep = '%s for ' % (self.field1)
    for p in self.field2.all():
        str_rep += str(p) + self.field3
...