Django版本为2.1.7
你好,我有一个一对多的关系,我问自己是否有可能为农民进行某种预选(标签或类似标签?)?
因为不是每个农民都拥有或想要鸡,或者他只是牛的专家。
意思是,现在,每当我想将单个动物分配给农民时,我都会在Django Admin中看到所有农民。随着越来越多的农民,它变得令人困惑。因此,我想在Farmers
模型中插入某种类型的模型字段,例如chickens = true or not true
和cows = true or not true
或为每个物种引入一个新模型。
我的目标是为每个农民分配一组物种。因此,下一次我要添加鸡django时,仅显示将在其农田上与鸡一起工作的农民,当某些农民知道他们只处理一组特定物种时,则不显示所有农民。
作为一个新手,我想我必须为每个具有ManyToMany关系的物种创建一些新模型?因此Farmers
> << / strong> 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)
<...>
答案 0 :(得分:1)
如果我们使用postgres
作为数据库,则arrayField
link
可以很好地完成这项工作。
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
link之后,我们可以使用ListField
link之类的字段功能,并且可以轻松实现。
答案 1 :(得分:0)
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)
''' 我认为这会给你最好的缓解 '''