- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个名为 Project 的 Django 模型,它自身具有递归外键。
class Project(models.Model):
project_root_parent = models.ForeignKey('self',on_delete=models.CASCADE, related_name='root_parent',null=True)
project_parent = models.ForeignKey('self', on_delete=models.CASCADE, related_name = 'parent',null=True)
这是我想要的功能:
如果项目没有父项目,则该字段设置为创建对象主键。
如果项目没有根父项目,则该字段设置为创建的对象主键。
理想情况下,我希望将字段的默认值设置为主键。如果这是不可能的,那么我需要能够在生成主键并在 Django 中实例化模型后更新该值。
我已经考虑过重写 save 方法或使用 post_save
信号,但我不确定这些方法是否正确。
最佳答案
class Project(models.Model):
project_root_parent = models.ForeignKey('self',on_delete=models.CASCADE, related_name='root_parent',null=True, blank=True)
project_parent = models.ForeignKey('self', on_delete=models.CASCADE, related_name = 'parent',null=True, blank=True)
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
if self.project_root_parent is None:
self.project_root_parent = self
if self.project_parent is None:
self.project_parent = self
super().save(*args, **kwargs)
诀窍是在创建 CharFields
时确保 blank=True
,因为这与将它们设置为可为空不同。
调用 super 构造函数将字段保存为空白。项目实例存在后,将字段更改为其自身。然后再次调用 super 构造函数来检测变化并保存模型。
关于python - 在 Django 2.1 中创建模型后将字段更新为主键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52574349/
我在右侧有一个主 div 和一个侧边栏(用于导航/过滤器)。主 div 用于显示日志文件,在任何情况下都不应写入右侧栏。 问题:当出现没有空格的很长的消息(例如很长的文件路径)时,它将写入我的右侧栏。
我想根据内部从 TableView 的高度动态设置主 TableView 的行高。实现这一目标的最佳方法是什么? 最佳答案 尝试使用 UITableViewAutomaticDimension 动态设
我正在尝试为 GridLayout 调用 findviewbyid,但无论我放置在哪里,它都会返回 null。在设置 contentView 并膨胀 ViewStub 后,我将其称为 onCreate
对于一个巨大的 myisam 表(超过 1B 行),我有 2 个唯一变量,其中一个有 18 个数字,另一个有 10 个拉丁字符。 我应该选择哪一个作为主键? 如果是数字;小数还是大整数? 它们都不能帮
我有一个包含 19 行的用户表(第一行是 admin)。我需要添加更多内容,因此我有另一个数据库,其中的表有超过 1,400,000 个用户。 我的表有一个“user_id”作为主键,INT(11),
我是一名优秀的程序员,十分优秀!