Python django模型对象和queryset保存到其他表
使用django 2.0.2 Python 3.4 跳过详细信息models.pyPython django模型对象和queryset保存到其他表,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,使用django 2.0.2 Python 3.4 跳过详细信息models.py class Post(models.Model): postuid = models.BigAutoField( db_column='postUID', primary_key=True) useruid = models.Foreignkey .... skip content = models.Text .... registerdate = m
class Post(models.Model):
postuid = models.BigAutoField(
db_column='postUID', primary_key=True)
useruid = models.Foreignkey .... skip
content = models.Text ....
registerdate = models.Date ....
class KeepPost(models.Model):
keeppostuid = models.BigAutoField(
db_column='KeepPostUID', primary_key=True)
useruid = models.ForeignKey(
'Userinfo', db_column='UserUID', on_delete=models.CASCADE)
postuid = models.ForeignKey(
'Post', db_column='PostUID', on_delete=models.DO_NOTHING)
content = models.TextField(db_column='Content')
registerdate = models.DateTimeField(
db_column='RegisterDate')
keepdate = models.DateTimeField(
db_column='KeepDate')
class ReportPost(models.Model):
reportuid=models.BigAutoField(
db_column='ReportUID', primary_key=True)
postuid=models.ForeignKey(
'Post', db_column='PostUID', on_delete=models.DO_NOTHING)
#useruid is reporter
useruid=models.ForeignKey(
'Userinfo', db_column='UserUID', on_delete=models.CASCADE)
registerdate = models.DateTimeField(
db_column='RegisterDate'
Post
到keepost
Post.objects.get(postuid=1) or Post.objects.filter(useruid=1)
KeepPost.objects.create(modelobjects or queryset)
get()
是返回模型对象,filter()
是返回查询集
如果我想在报告后删除
为什么要使用on_delete DO_NOTHING->即使ReportedPost被删除,我也要保留一条记录
只有一个帖子被删除了
ex)
希望模型移动到keepost和delete
postmodel.delete()
如果用户想要删除帐户
usermodel = User.objects.get(useruid=useruid)
Postquery = usermodel.post_set.all()
reportPost = ReportPost.objects.filter(Q(postuid__in=Postquery))
我认为在intersect Postquery和reportPost之后,应该转向Keepost
usermodel.delete()
以下是我可以简单地做的 1。删除
keepost
model.
2。更改Post型号
class Post(models.Model):
user = models.ForeignKey(User, related_name='posts', on_delete=models.CASCADE)
content = models.TextField()
registerdate = models.DateTimeField(auto_now_add=True)
is_archived = models.BooleanField(default=False)
archived_date = models.DateTimeField()
@property
def archive_post(self):
if not self.is_archived:
self.is_archived = True
self.archived_date = datetime.now()
self.save()
这里发生了什么事??
keepost
模型,因为删除并保留Post
对象仍然会维护数据,所以它是多余的postid=models.BigAutoField(db\u column='postid',primary\u key=True)
。Django将自动分配主键id是否存档
和存档日期
保存实例最简单的方法是根本不删除它post = Post.objects.get(pk=1) # or id=1
post.archive_post
或
如果您想永远删除
Post
实例,请调用.delete()
方法。以下是我可以做的简单操作
1。删除keepost
model.
2。更改Post型号
class Post(models.Model):
user = models.ForeignKey(User, related_name='posts', on_delete=models.CASCADE)
content = models.TextField()
registerdate = models.DateTimeField(auto_now_add=True)
is_archived = models.BooleanField(default=False)
archived_date = models.DateTimeField()
@property
def archive_post(self):
if not self.is_archived:
self.is_archived = True
self.archived_date = datetime.now()
self.save()
这里发生了什么事??
keepost
模型,因为删除并保留Post
对象仍然会维护数据,所以它是多余的postid=models.BigAutoField(db\u column='postid',primary\u key=True)
。Django将自动分配主键id是否存档
和存档日期
保存实例最简单的方法是根本不删除它post = Post.objects.get(pk=1) # or id=1
post.archive_post
或
如果你想永远删除一个
Post
实例,那么调用.delete()
方法。@Shift'N Tab keepost是将Post存储在delete after report中,这仍然无关紧要。。。您仍然可以利用foreignkey,即KeePost将存储Post对象这一事实。@如果我将KeePost中的postId更改为foreignkey(“Post”,db_column='postId',on_delete=models.DO_NOTHING)
下一步是什么?删除所有冗余字段,您还可以发布视图吗?我可以给你一些提示,如何达到你想要达到的目标do@Shift'N选项卡我添加了更多信息。。我没有idea@Shift'N Tab Keepost是在报告后删除时存储帖子它仍然不重要。。。您仍然可以利用foreignkey,即KeePost将存储Post对象这一事实。@如果我将KeePost中的postId更改为foreignkey(“Post”,db_column='postId',on_delete=models.DO_NOTHING)
下一步是什么?删除所有冗余字段,您还可以发布视图吗?我可以给你一些提示,如何达到你想要达到的目标do@Shift'N选项卡我添加了更多信息。。我不知道