[英]How to get fields of foreign key
在模型.py 中:
class Comment(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE, related_name='comments')
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
body = models.TextField()
rating = models.FloatField(null=True)
aggregate = models.FloatField(null=True)
date = models.DateTimeField(auto_now_add=True)
class Item(models.Model):
id_item = models.AutoField(primary_key='true')
item_name = models.CharField(max_length=100, null=False)
slug = models.SlugField(max_length=250, blank=True, null=True)
item_description = models.TextField()
item_img = models.ImageField(blank=True, null=True, upload_to="static/item/cover/")
tags = TaggableManager()
在views.py中:
def detail(request, slug_text):
details = Item.objects.filter(slug=slug_text)
if details.exists():
reviews = Comment.objects.filter(item=slug_text)
details = details.first()
average = reviews.aggregate(Avg("rating"))["rating_avg"]
average = round(average, 2)
form = CommentForm()
if request.method == "POST":
form = CommentForm(request.POST, author=request.user, item=details)
if form.is_valid():
form.save()
return HttpResponseRedirect(slug_text)
else:
return HttpResponse('<h1>Trang không tồn tại</h1>')
return render(request, 'homepage/detail.html', {'detail': details, 'form': form, 'average': average})
如果我想在这里获取 item.slug = slug_text 字段怎么办?
reviews = Comment.objects.filter(item=slug_text)
您离它不远,要从外键获取数据,您可以使用双倍的分数 __ 即:获取 item slug 使用 item__slug 见下文
reviews = Comment.objects.filter(item__slug=slug_text)
一切顺利。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.