ដក​ស្រង់​ពី​ឯកសារ​ផ្លូវការ​របស់​មូលនិធិ Django

 

It’s perfectly OK to relate a model to one from another app. To do this, import the related model at the top of the file where your model is defined. Then, refer to the other model class wherever needed. For example:

 

from django.db import models
from geography.models import ZipCode

class Restaurant(models.Model):
    # ...
    zip_code = models.ForeignKey(
        ZipCode,
        on_delete=models.SET_NULL,
        blank=True,
        null=True,
    )

 

Django places some restrictions on model field names:

 

1.  A field name cannot be a Python reserved word, because that would result in a Python syntax error. For example:
 

class Example(models.Model):
    pass = models.IntegerField() # 'pass' is a reserved word!

 

2. A field name cannot contain more than one underscore in a row, due to the way Django’s query lookup syntax works. For example:

 

class Example(models.Model):
    foo__bar = models.IntegerField() # 'foo__bar' has two underscores!

 

3. A field name cannot end with an underscore, for similar reasons.

 

These limitations can be worked around, though, because your field name doesn’t necessarily have to match your database column name. See the db_column option.

 

SQL reserved words, such as join, where or select, are allowed as model field names, because Django escapes all database table names and column names in every underlying SQL query. It uses the quoting syntax of your particular database engine.

 

If one of the existing model fields cannot be used to fit your purposes, or if you wish to take advantage of some less common database column types, you can create your own field class. Full coverage of creating your own fields is provided in Writing custom model fields.