【发布时间】:2021-08-13 09:21:33
【问题描述】:
我有 Django,其中有一个名为 Listing 的应用程序,它的模型如下,但 CreateView 和 UpdateView 没有为模型工作。
我也在使用 mixins 但我已经实现了 Custom User ,这会导致问题吗?
- 出现错误
in get_form return form_class(**self.get_form_kwargs())
TypeError: 'ListingForm' object is not callable
- 任何其他用户正在更新其他用户的列表,UserPassesTestMixin 不起作用
import uuid
from django.db import models
from django.urls import reverse
from django.contrib.auth import get_user_model
User = get_user_model()
class Listing(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
...other fields
创建视图
class ListingCreateView(LoginRequiredMixin, CreateView):
model = Listing
form_class = ListingForm()
def form_valid(self, form):
form.instance.owner = self.request.user
return super().form_valid(form)
更新视图
class ListingUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = Listing
form_class = ListingForm()
def form_valid(self, form):
form.instance.owner = self.request.user
return super().form_valid(form)
def test_func(self):
listing = self.get_object()
#print(self.request.user, listing.owner)
if(self.request.user == listing.owner):
return True
else:
return False
forms.py
from django import forms
from .models import Listing
class ListingForm(forms.ModelForm):
class Meta:
model = Listing
fields = ['price', 'sqft', 'acre', 'title', 'description', 'address', 'city', 'state',
'country', 'zipcode', 'photo_main', 'photo_1', 'photo_2', 'photo_3', 'photo_4', 'photo_5']
提前解决!
【问题讨论】:
-
不工作是什么意思?你得到什么错误,什么没有更新?
-
您在创建视图中的
form_valid没有正确的参数。 -
我没有收到任何错误当我在创建新列表时单击保存按钮时,它不会被添加到我的模型列表中第二个问题是假设我是员工并且管理员上传了列表但是我仍然可以编辑它。简而言之,UserPassessTestMixin 每次我猜都会返回 true!
-
@schwobaseggl 那你能改正吗?
-
@schwobaseggl 我将其编辑为 valid_form(self, form) 仍然无法正常工作
标签: python django django-models django-views django-forms