python - 在第三个中创建两个模型之间的关系
问题描述
我是开发新手,我处于死胡同。我正在尝试为 Python3 和 Django 创建一个授权系统
我有模型:
class Grant(models.Model):
id = models.AutoField(primary_key=True)
program = models.ForeignKey('Program', on_delete=models.SET_NULL, null=True)
title = models.CharField(max_length=200, help_text="Enter name of the grant")
budget = models.DecimalField(max_digits=12, decimal_places=2,default=Decimal('0.00'),verbose_name="Total budget")
grantee = models.ForeignKey('Grantee', on_delete=models.SET_NULL, null=True)
description = models.TextField(max_length=1000)
owner = models.ForeignKey(settings.AUTH_USER_MODEL,null=True, blank=True, on_delete=models.SET_NULL)
class Report(models.Model):
title = models.CharField(max_length=100)
grant_name = models.ForeignKey('Grant', on_delete=models.SET_NULL, null=True)
CAT_LIST = (
('s', 'Salary'),
('e', 'Event'),
('t', 'Transportation'),
('p', 'Printing'),
('eq', 'Equipment'),
('of', 'Office'),
('o', 'Other')
)
categories = models.CharField(max_length=2, choices=CAT_LIST, blank=True)
spent = models.DecimalField(max_digits=12, decimal_places=2,default=Decimal('0.00'))
repbudget = models.DecimalField(max_digits=12, decimal_places=2,default=Decimal('0.00'),verbose_name="Budget")
comment = models.TextField(max_length=300, null=True)
# Below the mandatory fields for generic relation
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey()
class Installment(models.Model):
id = models.AutoField(primary_key=True)
grant_name = models.ForeignKey('Grant', on_delete=models.SET_NULL, null=True)
amount = models.DecimalField(max_digits=12, decimal_places=2,default=Decimal('0.00'))
date = models.DateField(default=datetime.date.today)
date_report = models.DateField(default=datetime.date.today)
现在我需要为分期付款报告创建一个模型,它应该包括同一赠款的分期付款和报告的类别。像这样的东西:
class InstallmentReport(models.Model):
id = models.AutoField(primary_key=True)
title = models.ForeignKey('Report', on_delete=models.CASCADE)
spent = models.DecimalField(max_digits=12, decimal_places=2,default=Decimal('0.00'))
installment = models.ForeignKey('Installment', on_delete=models.CASCADE)
当我创建此报告时,我可以连接到Installment
,但我无法想象如何过滤报告的标题以获得相同的授权。你能给一些建议或者一些例子吗?
PS我为我的英语错误以及可能在代码设计中的错误道歉
解决方案
我想我可以通过视图模板,使用 POST,为此,我需要添加到报告的模型分期付款。然后{% for categorie in installment.report %}
。但是会很好,如果我可以在创建或更新视图中做到这一点。但是我没有来如何过滤报告类别,没有它,用户应该从所有授权中选择所有类别,但它不是一个变体。
推荐阅读
- python - raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 403: Forbidden
- botframework - Bot Framework:使用 LUIS 处理较长电子邮件的方法(超过 500 个字符)
- excel - 替换 for 循环,以便计算非空行
- mysql - 是否可以仅通过 cpanel/phpmyadmin 访问“复制”数据库?
- apache-spark - 使用 SQL 语法过滤和在 Pyspark 中显式调用列之间的区别?
- python - 如何在 ATOM 编辑器中为每个项目设置 PYTHONPATH
- typescript - firebase 键值返回未定义
- mongodb - pecl install mongodb 失败:致命错误:找不到“Security/Security.h”文件
- c - 有没有办法让进程知道 dtrace 已附加?
- visual-studio - Azure 数据工厂 v2 未显示在 Visual Studio 2015 的服务器资源管理器或云资源管理器中