【发布时间】:2021-07-03 06:24:01
【问题描述】:
以下是我的模型,我只想以帖子形式显示用户加入的那些组。 示例:如果我加入了“mcu”组,那么应该只显示那个组,我应该怎么做?
组模型
class Group(models.Model):
name = models.CharField(max_length=200, unique=True)
description = models.TextField(blank=True, default='')
members = models.ManyToManyField(User, through='GroupMember')
class GroupMember(models.Model):
group = models.ForeignKey(Group, related_name='memberships',on_delete=models.CASCADE)
user = models.ForeignKey(User, related_name='user_groups',on_delete=models.CASCADE)
class Meta:
unique_together = ('group', 'user')
后模型
User = get_user_model()
class Post(models.Model):
user = models.ForeignKey(User, related_name='posts',on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now=True)
title = models.CharField(max_length=250,default='')
message = RichTextField()
group = models.ForeignKey(Group, related_name='posts', null=True, blank=True,on_delete=models.CASCADE)
class Meta:
ordering = ['-created_at']
unique_together = ['user', 'message']
在views.py中
class CreatePost(LoginRequiredMixin, SelectRelatedMixin, generic.CreateView):
model = models.Post
form_class = forms.PostForm
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.user = self.request.user
self.object.save()
return super().form_valid(form)
在forms.py中
class PostForm(forms.ModelForm):
class Meta:
model = models.Post
fields = ('title', 'message', 'group')
widgets = {
'message': forms.Textarea(attrs={'class': 'form-control mb-3'}),
'title': forms.TextInput(attrs={'class': 'form-control mb-3'}),
'group': forms.Select(attrs={'class': 'form-control'}),
}
【问题讨论】:
-
请在问题中添加您需要的视图和表单类。
-
请在问题中添加forms.py文件。
-
@AbdulAzizBarkat,@FA,我已经更新了问题
标签: django django-models django-rest-framework django-views django-forms