add ForeignKey

This commit is contained in:
Maxim Kurnikov
2018-11-10 20:03:09 +03:00
parent 233e047117
commit c32a7842d6
5 changed files with 34 additions and 1 deletions

View File

@@ -7,3 +7,5 @@ from .fields import (AutoField as AutoField,
Field as Field,
SlugField as SlugField,
TextField as TextField)
from .fields.related import (ForeignKey as ForeignKey)
from .deletion import CASCADE as CASCADE

View File

@@ -0,0 +1,2 @@
def CASCADE(collector, field, sub_objs, using):
...

View File

@@ -0,0 +1,14 @@
from typing import Type, Union, TypeVar, Any, Generic
from django.db import models
from django.db.models import Field
_T = TypeVar('_T', bound=models.Model)
class ForeignKey(Field, Generic[_T]):
def __init__(self,
to: Union[Type[_T], str],
on_delete: Any,
**kwargs): ...
def __get__(self, instance, owner) -> _T: ...

View File

@@ -0,0 +1,14 @@
[case testForeignKeyWithClass]
from django.db import models
class User(models.Model):
pass
class Profile(models.Model):
user = models.ForeignKey(to=User, on_delete=models.CASCADE)
profile = Profile()
reveal_type(profile.user) # E: Revealed type is 'main.User*'
[out]

View File

@@ -15,7 +15,8 @@ MYPY_INI_PATH = ROOT_DIR / 'test' / 'plugins.ini'
class DjangoTestSuite(DataSuite):
files = [
'check-model-fields.test',
'check-postgres-fields.test'
'check-postgres-fields.test',
'check-model-relations.test'
]
data_prefix = str(TEST_DATA_DIR)