我正在尝试为我的网站构建自己的自定义用户到用户消息传递应用。我知道邮递员和其他人,但我自己做了两个原因:1。更熟悉Django,2。包括进一步定制的可能性。因此,我正在尝试创建一个简单的模型和ModelForm来使用,但我收到了一个错误。以下是我的代码。
models.py
from django.db import models
from home.models import Profile
class Message(models.Model):
recipient = models.ManyToManyField(Profile, related_name = 'recipient')
sender = models.ForeignKey(Profile, on_delete = models.CASCADE, related_name = 'sender')
subject = models.CharField(max_length = 1000, blank = True)
message = models.TextField()
sent = models.DateTimeField(auto_now_add = True)
unread = models.BooleanField(default = True)
def __str__(self):
return 'Message from ' + str(self.sender) + '. Subject:' + str(self.subject)
为了完整性,home.models Profile类在下面,虽然这不是问题。
home.models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete = models.CASCADE, null = True)
bio = models.TextField(max_length=500, blank=True)
location = models.CharField(max_length=30, blank=True)
birth_date = models.DateField(null=True, blank=True)
def __str__(self):
return self.user.username
forms.py
from django.forms import ModelForm
from django.contrib.auth.models import User
from messenger.models import Message
class MessageForm(ModelForm):
class Meta:
model = Message
fields = ('recipient','sender','subject','message','unread')
我只是想通过在视图的get方法中定义查询集来弄清楚如何过滤并拉出“当前用户”在收件人列表中的所有邮件。问题是我在执行此查询时遇到问题,而且我在Stack Overflow上找到的所有问题都是较旧的(大约2013年),或者我看不出它们如何直接解决我的问题。
我尝试过使用shell并搜索
等内容message = Message.objects.first()
message.recipient.all()
显示以下内容
<QuerySet [<Profile: jeff>, <Profile: joe>, <Profile: billy>]>
这似乎表明查询集的组成对象都是Profile类的所有对象,但是当我尝试搜索这样的东西时:
Message.objects.filter(recipient__profiles__in='billy')
我收到以下错误:
raise FieldError('Related Field got invalid lookup: {}'.format(lookups[0]))
django.core.exceptions.FieldError: Related Field got invalid lookup: profiles
我尝试了许多不同的路径无济于事,我想我只是不理解搜索功能。基本上我所要做的就是创建一个收件箱(查找当前用户在收件人列表中的所有邮件),经过一段时间在线查看我不知所措。
答案 0 :(得分:2)
尝试使用
<textarea class="first" placeholder="Enter Address.."></textarea>
<textarea class="second" placeholder=" Enter Address.."></textarea>