Reputation: 57
Hey I am using the First Parameter as a model but still it keeps on giving the error: First parameter to ForeignKey must be either a model, a model n ame, or the string 'self'
for my code.
It works totally well if I use 'self' as first parameter for foreign key. but thats not what I want. Also i am unable even to makemigrations after the following code.
models.py
from django.db import models
import datetime
from django.utils import timezone
class commentt(models.Manager):
comment_id=models.IntegerField(primary_key=True)
name=models.CharField(max_length=100, default="No Comment Added")
comment_created=models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
# Create your models here.
class task_check_manager(models.Manager):
def create_task(self, title,c1,c2,c3,list,score_occurence,score_occurence_csm,To):
Task_check = self.create(title=title,c1=c1,c2=c2,c3=c3,list=list,score_occurence=score_occurence,score_occurence_csm=score_occurence_csm,To=To)
# do something with the book
return Task_check
class task_check(models.Model):
LIST = (
('DAILY', 'DAILY'),
('WEEKLY','WEEKLY'),
('FORTNIGHT','FORTNIGHT'),
('MONTHLY','MONTHLY')
)
STATUS=(
('YES','YES'),
('NO','NO'),
('NEUTRAL','NEUTRAL')
)
title=models.CharField(max_length=50)
c1=models.CharField(max_length=20,default='C1')
c2=models.CharField(max_length=20,default='C2')
c3=models.CharField(max_length=20,default='C3')
From=models.DateTimeField(default=timezone.now())
To=models.DateTimeField(default=timezone.now())
#created_task=models.DateTimeField(auto_now_add=True)
status=models.CharField(max_length=15,default="NEUTRAL",choices=STATUS)
list=models.CharField(max_length=15, default='DAILY',choices=LIST )
score_occurence_csm=models.IntegerField(default=0)
score_occurence=models.IntegerField(default=0)
comments=models.ForeignKey(commentt, on_delete=models.SET_NULL, null=True)
vendor=models.TextField(max_length=200,default="NONE", editable=False)
objects = task_check_manager()
def __str__(self):
return self.title
Upvotes: 2
Views: 6897
Reputation: 477160
You Commentt
model is indeed not a model, it is a manager. You should make it a subclass of Model
:
class Commentt(models.Model): # <- Model, not Manager
comment_id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=100, default="No Comment Added")
comment_created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
Note: According to the PEP-8 Style Guide, the classes should be written in
PascalCase
, and the fields insnake_case
.
Upvotes: 5