django版本是2.1.7
您好,我有一个Onetomany的关系,我问自己是否有可能为我的农民进行某种预选(标签左右?)?因为并非每个农民都有或想要鸡,或者他仅是奶牛的专家。目前,每当我想为农民分配单个动物时,我都会看到我的Django管理员都展示了所有农民。随着越来越多的农民的困惑。因此,我想在我的Farmers
模型中插入某种模型字段...例如chickens = true or not true
和cows = true or not true
,或为每个物种引入一个新模型。
我的目标是,将一组物种分配给每个农民。因此,下次我想添加鸡肉django时,只会向农田上的鸡肉搭配鸡肉,当某些农民知道他们只处理一组特定的物种时,展示所有农民就没有意义。
作为新手,我想我必须为每个有很多关系的物种制作一些新模型吗?因此Farmers
>< Species X, Y, Z
<Indiviual Anmial
。
谢谢
class Farmers(models.Model):
name = models.CharField(max_length=100)
farm_img = models.ImageField(upload_to='farm/', max_length=255, null=True, blank=True)
slug_farm = models.SlugField(blank=True)
<...>
class Chickens(models.Model):
farmer = models.ForeignKey(Farmers, on_delete=models.CASCADE, null=True)
chickenname = models.CharField(max_length=100)
<...>
class Cows(models.Model):
farmer = models.ForeignKey(Farmers, on_delete=models.CASCADE, null=True)
cowname = models.CharField(max_length=100)
<...>
class Rabbits(models.Model):
farmer = models.ForeignKey(Farmers, on_delete=models.CASCADE, null=True)
cowname = models.CharField(max_length=100)
<...>
如果我们使用 postgres
作为db,则arrayField
链接可以做这项工作的好选择。
from django.contrib.postgres.fields import ArrayField
class Farmers(models.Model):
.... necessary fields
SAMPLE_CHOICES = (
('CHICKEN', 'CHICKEN'),
('COW, 'COW'),
('No Species', 'No Species')
.....
)
choices = ArrayField(
models.CharField(choices=SAMPLE_CHOICES, max_length=10, blank=True, default='No Species'),
)
现在,每当我们需要根据选择上过滤Farmer
模型时,我们就可以这样做,例如以下
Farmer.objects.filter(choices__contains=['cow'])
更新
当您使用django-mysql数据库时,django-mysql
链接以下内容此处我们可以具有诸如ListField
链接之类的字段功能,并且可以轻松实现。
class ChickenFarmers(models.Model):
name = models.CharField(max_length=100)
farm_img = models.ImageField(upload_to='farm/', max_length=255, null=True, blank=True)
slug_farm = models.SlugField(blank=True)
class CowFarmers(models.Model):
name = models.CharField(max_length=100)
farm_img = models.ImageField(upload_to='farm/', max_length=255, null=True, blank=True)
slug_farm = models.SlugField(blank=True)
class RabbitsFarmers(models.Model):
name = models.CharField(max_length=100)
farm_img = models.ImageField(upload_to='farm/', max_length=255, null=True, blank=True)
slug_farm = models.SlugField(blank=True)
class Chickens(models.Model):
farmer = models.ForeignKey(ChickenFarmers, on_delete=models.CASCADE, null=True)
chickenname = models.CharField(max_length=100)
class Cows(models.Model):
farmer = models.ForeignKey(CowFarmers, on_delete=models.CASCADE, null=True)
cowname = models.CharField(max_length=100)
class Rabbits(models.Model):
farmer = models.ForeignKey(RabbitsFarmers, on_delete=models.CASCADE, null=True)
cowname = models.CharField(max_length=100)
'''我认为这一点将为您提供最大的救济'''