首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django模型从数据库中选择,另一个模型

Django模型从数据库中选择,另一个模型
EN

Stack Overflow用户
提问于 2020-05-30 14:29:33
回答 1查看 743关注 0票数 0

我试图弄清楚如何允许一个模型只取某些值。但是我不能使用IntegerField和选择选项,因为它是有几千个产品的产品数据库。更准确地说,我正在尝试创建管理产品订单的应用程序。现在我的模特是:

代码语言:javascript
运行
复制
class Order(models.Model):
    timestamp = models.DateField(auto_now_add=True)
    komentarz = models.CharField(max_length=150, unique=False)

class Product(models.Model):
    order = models.ForeignKey(Order, on_delete=models.CASCADE)
    r = models.CharField(max_length=50, unique=False)
    s = models.CharField(max_length=50, unique=False)
    p = models.CharField(max_length=50, unique=False)

我用产品数据库创建了另一个应用程序,它包含了大约3000条记录。

代码语言:javascript
运行
复制
class ProductBase(models.Model):
    r = models.CharField(max_length=50, unique=False)
    s = models.CharField(max_length=50, unique=False)
    p = models.CharField(max_length=50, unique=False)

基本上,我希望允许ProductBase在数据库中接受值,这要归功于ProductBase模型。知道我该用什么吗?

编辑:让它更清楚:

代码语言:javascript
运行
复制
R S P 
Name 1 Parameter S Parameter P 
Name 2 Parameter S Parameter P 
Name 3 Parameter S Parameter P

这是ProductBase数据库。我希望允许Product只接受这三个值中的一个。(实际上是3000)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-30 15:36:37

为了在Product中只允许一组特定的值,基于某种“条件”,在将一个新的Product保存到数据库之前,我只需要在视图函数中检查这个条件。因此,如果您让r, s, p创建新产品,比如说从表单中创建,然后检查条件是否满足,那么您可以将新的Product保存到db中。

假设r,s,p的集合在积和ProductBase中必须完全相同。例子可以是这样的:

代码语言:javascript
运行
复制
# receive data from the form
r_value = form.clean_data.get("r")
s_value = form.clean_data.get("s")
p_value = form.clean_data.get("p")

# Your condition
check_db = ProductBase.object.filter(
    s=s_value).filter(r=r_value).filter(p=p_value).exists()

if check_db:
    # create new product
    new_product = Product.object.create( #here goes values r, s, p )
    new_product.save()
else:
    # soma kind of feedback to user

条件可以是你想要的,只要改变逻辑。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62103862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档