在django中搜索外键字段

我一直试图在我的应用程序中构建一个搜索功能,但我一直坚持查询外键字段,因为它没有返回任何内容,代码也没有显示任何错误。下面是我的代码。

forms.py 
class StockSearchForm(forms.ModelForm):
    class Meta:
        model = Stock
        fields = ['category', 'item_name']

我在哪里实现搜索的视图

views.py
def list_items(request):
    header = 'List of items'
    form = StockSearchForm(request.POST or None)
    queryset = Stock.objects.all()
    context = {
        "form": form,
        "header": header,
        "queryset": queryset,
    }
    #Searching an item and category
    if request.method == 'POST':
        queryset = Stock.objects.filter(category__name__icontains=form['category'].value(),
                                        item_name__icontains=form['item_name'].value()
            )
        context = {
           "form": form,
           "header": header,
           "queryset": queryset,
        }

    return render(request, "list_items.html", context)

我的模型如下。

models.py
from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=50, blank=True, null=True)
    def __str__(self):
        return self.name

class Stock(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    #category = models.CharField(max_length=50, blank=True, null=True)
    item_name = models.CharField(max_length=50, blank=True, null=True)
    quantity = models.IntegerField(default='0', blank=True, null=True)
    receive_quantity = models.IntegerField(default='0', blank=True, null=True)
    receive_by = models.CharField(max_length=50, blank=True, null=True)
    issue_quantity = models.IntegerField(default='0', blank=True, null=True)
    issue_by = models.CharField(max_length=50, blank=True, null=True)
    issue_to = models.CharField(max_length=50, blank=True, null=True)
    phone_number = models.CharField(max_length=50, blank=True, null=True)
    created_by = models.CharField(max_length=50, blank=True, null=True)
    reorder_level = models.IntegerField(default='0', blank=True, null=True)
    timestamp = models.DateTimeField(auto_now_add=False, auto_now=True)
    last_updated = models.DateTimeField(auto_now_add=True, auto_now=False)
    export_to_CSV = models.BooleanField(default=False)

    def __str__(self):
        return self.item_name + '' + str(self.quantity)

所以发生的事情是,我可以很好地搜索"item_name“字段,结果会根据需要出现,但当我尝试搜索类别时,没有错误弹出,但没有显示任何结果,我觉得这是由于一些外键字段的问题,但我不能只是弄清楚,我将非常感谢一些帮助,这件事已经有相当长一段时间了。

转载请注明出处:http://www.hqqscc.com/article/20230526/1920222.html