嗨,Djangonauts, 我是Django新手,请原谅逻辑或代码中的任何愚蠢错误。
简介: 我正在构建一个Web应用程序,成员可以在其中编写有关某个主题的帖子并提供有关该主题的课程。示例成员可以撰写有关骑自行车带轮自行车的博客,并提供有关课程的信息。
我想要的东西: 我希望要提供课程的成员得到验证。示例:成员必须使用其详细信息填写表格,例如... 姓名,地址和带照片的身份证件。另外,您需要支付9.99美元的费用才能获得验证。在管理员(在本例中为我)检查一切是否良好之后,我将批准它们。然后他们将成为“认证会员”并能够提供课程
我到目前为止所拥有的:由于没有经过验证的条款,现在会员可以提供课程
class Event(models.Model):
user = models.ForeignKey(User, related_name='seller')
post = models.ForeignKey(Post, related_name='course')
price = models.DecimalField(max_digits=6, decimal_places=2)
stock = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(35)])
date = models.DateField()
time_from = models.TimeField()
time_to = models.TimeField()
event_types = (
('1', 'Webinar'),
('2', 'Actual Meet'),
)
event_choice = models.CharField(max_length=1, choices=event_types)
def get_absolute_url(self):
return reverse('posts:single', kwargs={'username': self.user.username,
'slug': self.post.slug})
def __str__(self):
return 'Meet for ' + self.post.title
我打算如何做:我打算在Django的管理员身份验证和授权中添加一个组
Home › Authentication and Authorization › Groups › Add group
Name: Verified
Permissions: Chosen permissions
event| event| Can add event
event| event| Can change event
event| event| Can delete event
现在我要从这里做什么?:到目前为止,我是否做对了事情,如何从这里开始做。我是否创建一个名为verified
的模型并添加forms.py以验证成员。权限如何出现在图中。
我的猴子补丁(不是@Ojas Kale的问题的一部分)
class Contact(models.Model):
user_from = models.ForeignKey(User, related_name='supporter')
user_to = models.ForeignKey(User, related_name='leader')
def __str__(self):
return '{} follows {}'.format(self.user_from, self.user_to)
User.add_to_class('following',
models.ManyToManyField('self', through=Contact, related_name='followers', symmetrical=False))
答案 0 :(得分:1)
一种解决方法是在用户中添加is_verified列。有多种方法可以做到这一点。但是从abstractUser扩展可能是最简单,最适合您的情况,因为 django.contrib.auth.models.AbstractUser 类将默认User的完整实现作为抽象模型提供。
在您的app_name.models.py中创建这样的用户类。
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
is_verified = models.BooleanField(default=False)
在您的settingps.py中
AUTH_USER_MODEL = 'app_name.User'
注意如何使用 app_name 。
现在,您可以根据需要添加任意多个属性。
通过默认is_verified设置为False,一旦管理员批准(验证),用户便将其更改为True。
希望这会有所帮助。