【发布时间】:2018-10-02 03:16:48
【问题描述】:
我的证明 App 的 CreateView 接受 2 个参数“用户”和“帖子”。 self.object.user = self.request.user 满足用户要求 我如何满足self.object.post 要求。我是 Django 的新手。如果我违反了任何 Django 规则,我深表歉意
models.py
User = get_user_model()
class Proof(models.Model):
user = models.ForeignKey(User, related_name='proofmade')
post = models.ForeignKey(Post, related_name='proofmade')
made_at = models.DateTimeField(auto_now=True)
image_of_task= models.ImageField()
proof_you_made_it = models.ImageField()
suggestions = models.TextField(max_length=1000)
def __str__(self):
return self.post.title
views.py
User = get_user_model()
class ProofCreate(LoginRequiredMixin, CreateView):
model = Proof
fields = ('image_of_task', 'proof_you_made_it', 'suggestions')
def form_valid(self, form, *args, **kwargs):
self.object = form.save(commit=False)
self.object.user = self.request.user
###### I think the following line may be wrong ##########
slug = self.kwargs.get('slug')
print(slug)
self.object.post = get_object_or_404(Post, slug=slug)
self.object.save()
return super().form_valid(form)
urls.py
app_name = 'proof'
urlpatterns = [
url(r'^new_proof/$', views.ProofCreate.as_view(), name='new_proof'),
【问题讨论】:
-
请显示网址格式。
-
@Alasdair 我已按要求添加了 URL 模式。它创建了一个表单,让我可以附加图像,当我点击提交时,它会出现 404 错误
-
@Alasdair 你认为我在 slug = self.kwargs.get('slug') 上犯了一个错误吗?我一直在尝试 shell 中的所有不同选项,试图弄清楚如何将帖子与证明
-
你希望从哪里得到蛞蝓?正则表达式
r'^new_proof/$中没有 slug。 -
@Alasdair 我尝试了 2 种不同的 url 模式(见上文)。知道如何在 url 中调用 post slug。 “post.slug”不起作用。
标签: python django python-3.x django-views django-urls