python - Django 表单 - 自动填写表单的用户 url attr - RelatedObjectDoesNotExist
问题描述
我仍然坚持我的问题。所以我找到了一种新的方法来做到这一点。更好的是,我认为您的帮助将不胜感激。
path('new/<seller>/', CreateChannelSellerView.as_view(),name="channel_to"),
假设我得到 .../new/fredo/ -> fredo 是卖家的用户名。我想抓住它。但是我遇到了一个问题:
异常类型:RelatedObjectDoesNotExist
异常值:
渠道没有卖家。
痕迹:
- form.instance.seller.add(existed_seller)
- “%s 没有 %s。” % (self.field.model.name , self.field.name)
视图.py
class CreateChannelSellerView(CreateView):
model = Channel
form_class = CreateSellerChannelForm
template_name = 'channel_seller_new.html'
def form_valid(self, form):
form.instance.consumer = self.request.user
seller_field = self.kwargs['seller']
current_seller = User.objects.filter(username=seller_field)
if current_seller.count()<1:
raise forms.ValidationError('Username does not exist')
else:
existed_seller = User.objects.get(username=seller_field)
form.instance.seller.add(existed_seller)
form.save()
return super(CreateChannelSellerView, self).form_valid(form)
def get_success_url(self):
return reverse_lazy('channel:channel_home')
模型.py
class Channel(models.Model):
consumer = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="channel_consumer", blank=True, null=True)
name = models.CharField(max_length=10)
seller = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="channel_seller")
def save(self, *args, **kwargs):
if not self.slug:
self.slug = unique_slugify(self, slugify(self.name))
super().save(*args, **kwargs)
def __str__(self):
return self.name
表格.py
class CreateSellerChannelForm(forms.ModelForm):
class Meta:
model = Channel
widgets = {
'name':forms.TextInput(attrs={'class':'','style':'','placeholder':'First group'}),
}
fields = [
'name',
]
解决方案
推荐阅读
- javascript - 获取数据到 Bootstrap 模态以更新数据
- css - 为什么 Woocommerce 商店无法在移动设备上运行?
- python - Plotly/Dash 大数据集 Densitymapbox 内存使用情况
- angularjs - 角度指令未在动态元素上触发
- excel - 复制没有填充条件格式列的单元格
- php - 通过回调参数类型紧密耦合的依赖关系
- c# - 控制模板制作精美按钮
- sql - Oracle中Case语句中的Select语句
- kubernetes - 无法启动 Kubernetes 集群。etcd 和 api-server 错误
- apache-spark - Spark - 如何将文本文件转换为多列模式 DataFrame/Dataset