社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

在python中从类的对象中引用类[duplicate]

Mohamed Samir591195 • 5 年前 • 1476 次点击  

我对webapps和数据库还不太熟悉,所以这可能是个愚蠢的问题。我想创建一个模型(“CategoryModel”),它的字段指向模型的另一个实例(其父实例)的主id。

class CategoryModel(models.Model):
    parentId = models.ForeignKey(CategoryModel)

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53760
 
1476 次点击  
文章 [ 4 ]  |  最新文章 5 年前
Punnerud
Reply   •   1 楼
Punnerud    5 年前

您还可以设置null=True和blank=True

class CategoryModel(models.Model):
    parentId = models.ForeignKey("self", on_delete=models.CASCADE, null=True, blank=True)


blank=True,允许表单内验证

Hailee
Reply   •   2 楼
Hailee    6 年前

https://books.agiliq.com/projects/django-orm-cookbook/en/latest/self_fk.html

class Employee(models.Model):
    manager = models.ForeignKey('self', on_delete=models.CASCADE)

或者

class Employee(models.Model):
    manager = models.ForeignKey("app.Employee", on_delete=models.CASCADE)

https://stackabuse.com/recursive-model-relationships-in-django/

Jared Forsyth Brandon
Reply   •   3 楼
Jared Forsyth Brandon    12 年前

您可以使用字符串“self”来指示自引用。

class CategoryModel(models.Model):
    parentId = models.ForeignKey('self')

https://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

Jared Forsyth Brandon
Reply   •   4 楼
Jared Forsyth Brandon    12 年前

您可以将模型的名称作为字符串传递给ForeignKey,它将做正确的事情。

所以:

parentId = models.ForeignKey("CategoryModel")

parentId = models.ForeignKey("self")