我是django 的新手
我正在尝试梳理两个查询集,例如,我有不同的农场。在这些农场里,他们有各自的区块。
我想把农场作为标题输出,并在下面列出每个农场的块。
示例:
农场1区块1区块2Blaock 3
农场2区块1区块2区块3
我目前的看法:
def irrigation(request):
obj3 = Farms.objects.all().values("id", "farm_name")
obj2 = Blocks.objects.all()
obj = obj2 | obj3
context = {"object": obj}
return render(request, "irrigation.html", context)
在html:中
{% for farms in object %}
<tr>
<td>{{ farms.farm_name }} {{ farms.id }}</td>
<td><a href="/ifarm/{{ farms.id }}"> Edit </a>
</tr>
{% endfor %}
在型号中
class Blocks(models.Model):
farm_id = models.CharField(max_length=100)
block_name = models.CharField(max_length=255, null=True)
block_size = models.CharField(max_length=255, null=True)
block_concurrent = models.CharField(max_length=255, null=True)
block_full_bloom = models.CharField(max_length=255, null=True)
block_harvest_start = models.CharField(max_length=255, null=True)
block_harvest_complete_date = models.CharField(max_length=255, null=True)
block_log1 = models.CharField(max_length=255, null=True)
block_log2 = models.CharField(max_length=255, null=True)
block_log3 = models.CharField(max_length=255, null=True)
block_crop_class = models.CharField(max_length=255, null=True)
block_crop_type = models.CharField(max_length=255, null=True)
block_crop_subtype = models.CharField(max_length=255, null=True)
block_planted_date = models.CharField(max_length=255, null=True)
block_plant_height = models.CharField(max_length=255, null=True)
block_root_system = models.CharField(max_length=255, null=True)
class Farms(models.Model):
farm_name = models.CharField(max_length=100)
user_id = models.IntegerField(default='1')
user_groups = models.JSONField(null=True)
请帮忙!
我找到了一个使用外键的解决方案。
更新型号:
class Blocks(models.Model):
#farm_id = models.CharField(max_length=100)
farm = models.ForeignKey(Farms, on_delete=models.CASCADE, default=None)
block_name = models.CharField(max_length=255, null=True)
block_size = models.CharField(max_length=255, null=True)
block_concurrent = models.CharField(max_length=255, null=True)
block_full_bloom = models.CharField(max_length=255, null=True)
block_harvest_start = models.CharField(max_length=255, null=True)
block_harvest_complete_date = models.CharField(max_length=255, null=True)
block_log1 = models.CharField(max_length=255, null=True)
block_log2 = models.CharField(max_length=255, null=True)
block_log3 = models.CharField(max_length=255, null=True)
block_crop_class = models.CharField(max_length=255, null=True)
block_crop_type = models.CharField(max_length=255, null=True)
block_crop_subtype = models.CharField(max_length=255, null=True)
block_planted_date = models.CharField(max_length=255, null=True)
block_plant_height = models.CharField(max_length=255, null=True)
block_root_system = models.CharField(max_length=255, null=True)
注意行:
farm = models.ForeignKey(Farms, on_delete=models.CASCADE, default=None)
农场保持不变:
class Farms(models.Model):
farm_name = models.CharField(max_length=100)
user_id = models.IntegerField(default='1')
user_groups = models.JSONField(null=True)
然后我运行命令:
python manage.py makemigrations
python manage.py migrate
视图中:
def irrigation(request):
obj = Blocks.objects.all()
context = {"object": obj}
return render(request, "irrigation.htm", context)
以html:输出
{% for blocks in object %}
{{ blocks.block_name }}
{% endfor %}