复制Django应用时出错,将其从policyportal更改为policyportal2020

问题描述 投票:0回答:1

policyportal2020.PolicyPortalUser.user_ptr :(字段E305)“ PolicyPortalUser.user_ptr”的反向查询名称与“ PolicyPortalUser.user_ptr”的反向查询名称发生冲突。提示:在“ PolicyPortalUser.user_ptr”或“ PolicyPortalUser.user_ptr”的定义中添加或更改related_name参数。

**同时运行这两个应用程序policyportal和policyportal2020相互冲突,我尝试过,简而言之,我想在Django应用程序中复制粘贴应用程序,但使用不同的名称和相同的功能。 **

#models.py
# Create your models here.
def path_and_rename(prefix, filename):
    ext = filename.split('.')[-1]
    filename = '{}.{}'.format(uuid.uuid4().hex, ext)
    return os.path.join(prefix, filename)

def Resource_Files(instance, filename):
    return path_and_rename('Resource_File', filename)

def Task_Files(instance,filename):
    return path_and_rename('Task Files',filename)

def Offer_Letter(instance,filename):
    return path_and_rename('Policy_Portal/Offer_Letter',filename)

class Notifications(models.Model):
    title = models.TextField(default="Title")
    description = models.TextField(default="Description")
    created = models.DateField(null=True,auto_now=True)
    is_by_mentor = models.BooleanField(default=False)




class Phase(models.Model):
    phase = models.IntegerField(default=0)
    deadline = models.IntegerField(default=15)


    def __str__(self):
        return 'Phase' + ' ' + str(self.phase)

# Policy Portal Model
class PolicyPortalUser(User):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    fname=models.TextField()
    lname=models.TextField()
    mobile_no=models.TextField()

    def __str__(self):
        return self.fname + ' '  + self.lname

# Super Mentor model
class SuperMentor(models.Model):
    pUser = models.ForeignKey(PolicyPortalUser,on_delete=models.CASCADE,null=True,blank=True)

    def __str__(self):
        return self.pUser.fname + ' ' + self.pUser.lname

# Resources Model

class Resources(models.Model):
    text = models.TextField()
    link = models.TextField(null=True)
    image = models.FileField(upload_to=Resource_Files,blank = True, null = True)

    def __str__(self):
        return self.text
#Mentor Model
class Mentor(models.Model):
    pUser = models.ForeignKey(PolicyPortalUser,on_delete=models.CASCADE,null=True,blank=True)

    city = models.CharField(max_length = 40, null = True, blank = True)
    state = models.TextField()


    def __str__(self):
        return self.pUser.fname + ' ' + self.pUser.lname

# Model for co-ordinating teacher
class Teacher(models.Model):
    name = models.CharField(max_length = 50) 
    school = models.CharField(max_length=50) 
    mobile_no = models.IntegerField()
    email = models.CharField(max_length = 30)


class Team(models.Model):

    pUser = models.OneToOneField(PolicyPortalUser,on_delete=models.CASCADE,blank=True,null=True)
    phase = models.ForeignKey(Phase,on_delete=models.DO_NOTHING,blank=True,null=True)
    teacher = models.ForeignKey(Teacher,on_delete=models.DO_NOTHING,blank=True,null=True)

    notifications = models.ManyToManyField(Notifications,blank=True,)
    is_offer_generated = models.BooleanField(default=False)

    id = models.IntegerField(null=True,blank=True)
    team_id = models.CharField(primary_key=True,max_length=30,)
    tname=models.TextField()
    city = models.CharField(max_length = 40, null = True, blank = True)
    state = models.TextField()
    is_member_registered = models.BooleanField(default=False)
    max_members = models.IntegerField(default=4)
    total_score = models.IntegerField(default=0)
    phase_deadline = models.DateTimeField(null=True)
    phase_completed = models.BooleanField(default=False)
    mentor = models.ForeignKey(Mentor,on_delete=models.DO_NOTHING,blank = True, null = True)
    def __str__(self):
        return self.tname



class Tasks(models.Model):
    title = models.TextField()
    description = models.TextField()
    max_score = models.IntegerField(blank=True,null=True)
    phase = models.ForeignKey(Phase , on_delete=models.CASCADE,null=True,blank=True)
    resource = models.ManyToManyField(Resources)
    activity = models.FileField(upload_to=Task_Files,null=True,blank=True)
    marking_scheme = models.TextField(default="No marking scheme provided.")
    is_for_all = models.BooleanField(default=False)
    is_by_mentor = models.BooleanField(default=False)



class Submission(models.Model):
    solution = models.TextField()
    drive_link = models.TextField()
    team = models.ForeignKey(Team,on_delete=models.CASCADE,null=True,blank=True)
    score = models.IntegerField(blank = True,null=True)
    mentor = models.ForeignKey(Mentor,on_delete=models.DO_NOTHING,blank=True,null=True)
    task = models.ForeignKey(Tasks,on_delete=models.DO_NOTHING,blank=True,null=True)
    created = models.DateTimeField(null=True,auto_now=True)
    comment = models.TextField(null=True)

class AssignedTask(models.Model):
    team = models.ForeignKey(Team,on_delete=models.CASCADE,null=True,blank=True)
    task = models.ForeignKey(Tasks,on_delete=models.CASCADE,null=True,blank=True)
    submission = models.ForeignKey(Submission,on_delete=models.DO_NOTHING,blank=True,null=True)
    is_submitted = models.BooleanField(default=False)
    is_evaluated = models.BooleanField(default=False)



class Interns(models.Model):
    fname = models.TextField(null = True)
    lname = models.TextField(null = True)
    org_type = models.CharField(max_length = 20, null = True, blank = True)
    org_name = models.TextField()
    desig = models.TextField()
    email = models.EmailField(null=True)
    mobile_no = models.TextField(null = False)
    team = models.ForeignKey(Team,on_delete=models.CASCADE,null=True,blank=True)
    city = models.TextField(null=True)
    state = models.TextField(null=True)
    offer_letter = models.FileField(upload_to=Offer_Letter,null=True,blank=True)

    is_leader = models.BooleanField(default=False)

    def __str__(self):
        return self.fname + ' ' + self.lname



    def __str__(self):
        return self.team.tname


class NotifiyTeams(models.Model):
    is_read = models.BooleanField(default=False)
    team = models.ForeignKey(Team,null=True,on_delete=models.CASCADE)
    notification = models.ForeignKey(Notifications,null=True,on_delete=models.CASCADE)
[![enter image description here][1]][1]```


  [1]: https://i.stack.imgur.com/eUQSh.png
python-3.x django-models foreign-keys rdbms django-model-field
1个回答
0
投票

您可以像这样更改PolicyPortalUser类,这将解决您的问题

policyportal2020应用

class PolicyPortalUser(models.Model):
  user = models.OneToOneField(User, on_delete=models.CASCADE, related_name ='PolicyPortal2020User_user')
  ...other fields...

policyportal应用

class PolicyPortalUser(models.Model):
  user = models.OneToOneField(User, on_delete=models.CASCADE, related_name ='PolicyPortalUser_user')
  ...other fields...
© www.soinside.com 2019 - 2024. All rights reserved.