Django:预选或标签.模型关系



django版本是2.1.7

您好,我有一个Onetomany的关系,我问自己是否有可能为我的农民进行某种预选(标签左右?)?因为并非每个农民都有或想要鸡,或者他仅是奶牛的专家。目前,每当我想为农民分配单个动物时,我都会看到我的Django管理员都展示了所有农民。随着越来越多的农民的困惑。因此,我想在我的Farmers模型中插入某种模型字段...例如chickens = true or not truecows = 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)

'''我认为这一点将为您提供最大的救济'''

最新更新