В моей модели первичного класса Сделки у меня есть определенные поля как описание, цена, дата_created и т. Д. Теперь мне нужно добавить некоторые поля, имеющие подполя. Например, я пытаюсь добавить поле Возраста к Сделки. В этом возрастном поле также есть подполя (например, score_for_kid, score_for_baby, score_for_old и т. Д.), И я хочу отредактировать эти оценки от администратора.Django: подполя в поле модели
Вот мой models.py:
class Deals(models.Model):
description = models.TextField()
price = models.DecimalField(max_digits=7, decimal_places=2)
url = models.URLField(verify_exists=False)
currency = models.CharField(max_length=3)
created_date = models.DateField(auto_now_add=True)
kid_score = models.IntegerField(max_length=2,default=0)
teenager_score = models.IntegerField(max_length=2,default=0)
youth_score = models.IntegerField(max_length=2,default=0)
old_score = models.IntegerField(max_length=2,default=0)
Я не хочу, чтобы хранить все эти подпункты поля (около 20-25 в 4 различных областях) в модели, а не поле возраста связан с этим подполь. Будет ли ManyToManyField работать для этого?
Основным требованием является то, что, когда пользователь выбирает подполе (скажем, детей) в браузере, отображаются все объекты с более высокими баллами.
Я очень новичок в Django, и любая помощь в этом будет замечательной. Благодарю.
Спасибо Aidan, я действительно хочу иметь только один kid_score (и другие оценки) для каждого Сделки, но тогда я думал, что для этого 25 полей это сделает мою модель слишком сложной. В приведенном выше коде у меня есть только 4 поля, но у меня есть еще много (для разных полей). Я не уверен, почему сохранение всех этих 25 полей в моей модели было бы лучше, вместо того, чтобы иметь дополнительные ключи для возраста и т. Д. Кроме того, для меня лучше всего использовать «age = models.ForeignKey (Deals)» в классе моей возрастной модели. Большое спасибо за концепцию, хотя она была довольно гладкой, как только я ее получил. –
Если это так, вам действительно нужно сохранить все на одной модели. Хотя вы можете создать поле OneToOne, я не думаю, что это правильное решение, учитывая, что все ваши объекты сделки будут иметь оценки. Вам просто нужно показать скрытые поля в вашем html. Это не так сложно сделать с ModelForms/Django Admin. –
Да, я согласен, так как каждый объект сделки имеет только один kid_score и т. Д., Лучше разместить это поле в модели сделки. Однако, как я уже сказал, у меня много таких полей (6 по возрасту, 10 для отношений и т. Д.), Которые могут насчитывать более 30 таких полей. Не будет ли модель с 30-40 полями работать с запросом или другими сложными операциями? Есть ли лучший способ сделать это и сделать это быстрее? –