Django - 从选定的外键字段中检索或获取数据
Django - Retrieve or get data from selected foreign key field
我是 Django 的新手,我正在开发一个 Django 项目并尝试在 Form 中选择特定外键对象时将其检索到变量中。
model.py
class item_category(models.Model):
idItemCat = models.CharField(primary_key=True max_length=5)
nameCategory = models.CharField(max_length=150)
def __str__(self):
return self.nameCategory
class item_code(models.Model):
idItemCat = models.ForeignKey(item_category, on_delete=models.DO_NOTHING)
idItemCode = models.CharField(primary_key=True, editable=False, max_length=20)
def __str__(self):
return self.idItemCode
我知道我可以通过制作 QuerySet 来检索对象,例如 .objects.last()
和 .objects.filter()
或者其他,但它只是从数据库或现有数据中检索对象。我要做的是,当用户提交新数据时,它将根据我在 this Form 中选择的内容检索特定的外键对象,因此我可以将其放入变量中。
知道应该怎么做吗?将不胜感激。
您真的应该看看表格上的 Django Docs。他们很优秀,会教你正确处理表单这个复杂的话题。
直接回答你的问题,好像你已经有了html部分,只要有form标签就可以了,像这样:
<form action='your_view' method='post'>
...
</form>
那么在你看来你可以这样做:
def your_view(request):
if request.method == 'POST':
category = item_category.objects.get(pk=request.POST.get('name_attribute_of_your_input'))
我需要查看更多细节才能为您提供更好的答案,但您应该先解决几个问题。
首先,您的 class 名称应大写,字段名称应小写,其次,您确定要将 CharField 设为主键吗?可以,但对于大多数情况,Django 创建的自动生成的整数 pk 是最好的。
class ItemCategory(models.Model):
# Django will create an integer pk for you
# idItemCat = models.CharField(primary_key=True max_length=5)
nameCategory = models.CharField(max_length=150)
def __str__(self):
return self.nameCategory
class ItemCode(models.Model):
idItemCat = models.ForeignKey(ItemCategory, on_delete=models.DO_NOTHING)
# Again, just let Django generate the primary key
# idItemCode = models.CharField(primary_key=True, editable=False, max_length=20)
def __str__(self):
return self.idItemCode
我是 Django 的新手,我正在开发一个 Django 项目并尝试在 Form 中选择特定外键对象时将其检索到变量中。
model.py
class item_category(models.Model):
idItemCat = models.CharField(primary_key=True max_length=5)
nameCategory = models.CharField(max_length=150)
def __str__(self):
return self.nameCategory
class item_code(models.Model):
idItemCat = models.ForeignKey(item_category, on_delete=models.DO_NOTHING)
idItemCode = models.CharField(primary_key=True, editable=False, max_length=20)
def __str__(self):
return self.idItemCode
我知道我可以通过制作 QuerySet 来检索对象,例如 .objects.last()
和 .objects.filter()
或者其他,但它只是从数据库或现有数据中检索对象。我要做的是,当用户提交新数据时,它将根据我在 this Form 中选择的内容检索特定的外键对象,因此我可以将其放入变量中。
知道应该怎么做吗?将不胜感激。
您真的应该看看表格上的 Django Docs。他们很优秀,会教你正确处理表单这个复杂的话题。
直接回答你的问题,好像你已经有了html部分,只要有form标签就可以了,像这样:
<form action='your_view' method='post'>
...
</form>
那么在你看来你可以这样做:
def your_view(request):
if request.method == 'POST':
category = item_category.objects.get(pk=request.POST.get('name_attribute_of_your_input'))
我需要查看更多细节才能为您提供更好的答案,但您应该先解决几个问题。
首先,您的 class 名称应大写,字段名称应小写,其次,您确定要将 CharField 设为主键吗?可以,但对于大多数情况,Django 创建的自动生成的整数 pk 是最好的。
class ItemCategory(models.Model):
# Django will create an integer pk for you
# idItemCat = models.CharField(primary_key=True max_length=5)
nameCategory = models.CharField(max_length=150)
def __str__(self):
return self.nameCategory
class ItemCode(models.Model):
idItemCat = models.ForeignKey(ItemCategory, on_delete=models.DO_NOTHING)
# Again, just let Django generate the primary key
# idItemCode = models.CharField(primary_key=True, editable=False, max_length=20)
def __str__(self):
return self.idItemCode