Reputation: 21
I'm getting this error: Missing 1 required positional argument: 'on_delete' in django model
from django.db import models
class Topic(models.Model):
top_name = models.CharField(max_length=264, unique=True)
def __str__(self):
return self.top_name
class Webpage(models.Model):
topic = models.ForeignKey(Topic)
name = models.CharField(max_length=264, unique=True)
url = models.URLField(unique=True)
def __str__(self):
return self.name
class AccessRecord(models.Model):
name = models.ForeignKey(Webpage)
date = models.DateField()
def __str__(self):
return str(self.date)
I'm using Django
v3.0 in Pycharm
[My code][1] [1]: https://i.sstatic.net/u4RGE.png
Upvotes: 0
Views: 3086
Reputation: 1019
on_delete
option on foreign keys is a required field. You have to use it in Django version 2.0 or higher.
The possible values for on_delete
are found in django.db.models docs. For example you can change your models to these:
class Webpage(models.Model):
topic = models.ForeignKey(Topic, on_delete=models.PROTECT)
.
.
class AccessRecord(models.Model):
name = models.ForeignKey(Webpage, on_delete=models.PROTECT)
This will prevent deletion of the referenced object by raising ProtectedError
Upvotes: 1
Reputation: 140
Change these two models
class Webpage(models.Model):
topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
.
.
class AccessRecord(models.Model):
name = models.ForeignKey(Webpage, on_delete=models.CASCADE)
Upvotes: 0