簡體   English   中英

如何獲取外鍵字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM