Mar*_*row 22 django django-models
我正在创建一个对象,该对象跟踪有关创建,更新和删除UUIDSyncable数据库中其他所谓对象的更改(更新).
这涉及扩展UUIDSyncable类save()和delete()方法的任何对象,以这种方式创建一个Update记录动作的新对象(插入,更新或删除),最初是一个models.CharField(max_length=64)指定对象的UUID pk的字段UUIDSyncable.
此时我想更新实现以使用Django的generic.GenericForeignKey()字段而不是我的单个字符字段.这将使得能够以更简单的方式访问正在记录更新的对象.
当您希望删除对象并将其存储为Update对象时,我的问题就出现了,因为您知道Django会对UUIDSyncable要删除的对象执行级联删除,删除所有以前的Update记录(不需要).
当UUIDSyncable在我的原始实现中删除了该对象时,每个Update对象仍将保留UUID以通知外部各方其删除.我的第一个模拟这个的解决方案是content_object = None在删除所有对象上的Update对象之前设置,从而防止删除级联.
它的接缝generic.GenericForeignKey()无法设置为允许NULL值.有没有办法做到这一点,或者如果没有办法如何以类似的方式使用CharField持有UUID主键和CharField持有模型名称的sperate 的标准?
Mar*_*ian 34
对于懒惰/务实:
class MyModel(models.Model):
...other fields...
content_type = models.ForeignKey(ContentType, blank=True, null=True, on_delete=models.SET_NULL)
object_id = models.PositiveIntegerField(blank=True, null=True)
content_object = generic.GenericForeignKey('content_type', 'object_id')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6867 次 |
| 最近记录: |