Django,如何将记录分配给其他员工?

时间:2018-10-01 22:38:38

标签: django django-models

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,并将其设置为默认值。 还是有更好的方法。

也许我应该在视图中将用户或电子邮件地址分配为字典。

1 个答案:

答案 0 :(得分:1)

使用字符字段来完成此操作很不直观。 assigned_to必须是ForeignKeyUser的模型(使用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)
   ...
相关问题