Как изменить вид ManyToManyField в шаблоне? - PullRequest
1 голос
/ 15 июня 2019

Это ужасно

Что я могу сделать, чтобы увидеть там тело этого поля?Должны быть значения объекта Size, но не «Размер объекта (id)»

У меня есть модели:

from django.db import models

class Good(models.Model):
    Name = models.CharField(max_length = 150)
    Size = models.ManyToManyField('Size')

    def _str_(self):
        return self.Name

class Size(models.Model):
    size = models.CharField(max_length = 150)

    def _str_(self):
        return self.size

Это мой forms.py

class GoodGet(forms.ModelForm):
    class Meta:
        model = Good_Get
        Size = forms.ModelChoiceField(queryset = Good.objects.all())
        fields = '__all__'

    def __init__(self, *args, good_id1=None, **kwargs):
        super(forms.ModelForm, self).__init__(*args, **kwargs)
        if good_id1 is not None:
            obj = Good.objects.filter(id = good_id1)
            for good in obj:
                good_sizes = good.Size.all()
            self.fields['Size'].queryset = good_sizes

Итак, я хочу, чтобы пользователь выбрал размер из списка размеров товара, но он не может видеть, какой размер он выберет.Я думаю, что мне нужно что-то сделать с моей базой данных, не так ли?

1 Ответ

2 голосов
/ 15 июня 2019

Вы должны использовать два последовательных подчеркивания в __str__ [Python-doc] , а не _str_, например:

class Good(models.Model):
    Name = models.CharField(max_length=150)
    Size = models.ManyToManyField('Size')

    def <b>__str__</b>(self):
        return self.Name

class Size(models.Model):
    size = models.CharField(max_length=150)

    def <b>__str__</b>(self):
        return self.size

" Магические объекты ", как сказано в документации PEP-8 , два последовательных подчеркивания в начале и конце:

__double_leading_and_trailing_underscore__: «магические» объекты или атрибуты, которые живут в управляемых пользователем пространствах имен.Например, __init__, __import__ или __file__.Никогда не изобретайте такие имена;используйте их только так, как задокументировано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...