gpt4 book ai didi

python - django 应用程序的正确模型结构?

转载 作者:太空宇宙 更新时间:2023-11-03 18:03:58 24 4
gpt4 key购买 nike

我有一个博客应用程序,由 3 个模型组成:部门、作者、帖子

我无法正确构建模型并创建相应的表单

models.py

    from django.db import models

class Department(models.Model):
name=models.CharField(max_length=20)
posts = models.ForeignKey('Post')
authors = models.ManyToManyField('Author')

def __unicode__(self):
return self.name

class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
post = models.ForeignKey('Post')

def __unicode__(self):
return self.last_name

class Post(models.Model):
title=models.CharField(max_length=20)
post = models.TextField()
creation_date = models.DateField(auto_now_add=True)

def __unicode__(self):
return self.title

这个想法是一个部门可以有多个职位,但每个职位只属于一个部门。一个部门也可以由多个作者组成,并且作者可以属于多个部门。我真正遇到麻烦的是表格。

相关的urls.py如下所示:

url(r'^(?P<department_id>\d+)/posts/$', views.posts, name='posts'),
url(r'^(?P<department_id>\d+)/add_post/$', views.add_post, name="add_post"),

这样我就可以按部门拉取所有帖子。该表单的目标是识别部门 ID 并将其自动添加到帖子中。

def add_post(request, department_id):
department = Department.objects.get(pk=department_id)
if request.method == 'POST':
new_post_form = PostForm(data=request.POST)
if new_post_form.is_valid():
new_post = new_post_form.save(commit=False)
new_post.department = department
new_post.save()
return redirect('posts', department_id=department_id)

现在我意识到 Post 模型 没有部门属性,这是我得到的错误,但我猜测有一种方法可以实现这一点,我只是不这样做不知道那是什么。

一如既往地感谢您的帮助。如果有任何不清楚的地方,请告诉我。

最佳答案

Post 模型没有部门属性这一事实应该给你一个线索,表明你的结构是错误的:它显然需要一个。问题在于您的外键方向错误:FK 是一对多关系,并且存在于“多”方,在您的情况下,指向“一”,即部门。

然后您的 View 代码将完全按原样工作,并且您可以使用 my_department.post_set.all() 检索某个部门的所有帖子。

关于python - django 应用程序的正确模型结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27206439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com