class Enquiry(models.Model):
CONSULTANT = {
('JAS', "do@do.com"),
}
first_name = models.CharField(max_length=35)
last_name = models.CharField(max_length=35)
email = models.EmailField(max_length=100)
phone_num = models.CharField(max_length=35)
message = models.TextField(max_length=3000, blank=True, default='')
processed = models.BooleanField(default=False)
assigned_to = models.CharField(max_length=30, choices=CONSULTANT, default='JAS')
date_added = models.DateTimeField(auto_now_add=True)
这些记录是从网站提交的。 问题是,我最初希望将所有查询发送给我。 do@do.com,但在我创建的管理控制台上,我将提供href进行查询。 该工作人员只会收到已分配给他们的查询。
我不知道该怎么做。
我应该将assigned_to
字段设为ForeignKey
吗,如果这样,则O有一个输入电子邮件和密码的自定义用户。
还是我应该使用类似request.user.id
的东西。我应该以某种方式找到我的ID,并将其设置为默认值。
还是有更好的方法。
也许我应该在视图中将用户或电子邮件地址分配为字典。
答案 0 :(得分:1)
使用字符字段来完成此操作很不直观。 assigned_to
必须是ForeignKey
到User
的模型(使用settings.AUTH_USER_MODEL
,请参见https://docs.djangoproject.com/en/dev/topics/auth/customizing/#referencing-the-user-model)。
然后,您可以编写一个帮助程序方法,该方法返回默认的受让人(作为User
实例)。为了简单起见,在以下示例中对电子邮件进行了硬编码,但是建议在生产中将其设置为用户可配置的值(通过数据库或设置):
from django.conf import settings
from django.contrib.auth import get_user_model
def get_default_assignee():
User = get_user_model()
try:
return User.objects.get(email='do@dodo.com')
except User.DoesNotExist:
return None
class Enquiry(models.Model):
...
assigned_to = = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.SET_NULL,
default=get_default_assignee, blank=True, null=True)
...