Django отношений в моделях - PullRequest
       4

Django отношений в моделях

0 голосов
/ 28 февраля 2020

Я сильно запутался в использовании отношений в моделях.

У меня есть база данных, которая содержит данные (см. Изображение)

Образ организации базы данных

У меня много полей.

К каждому полю прикреплен какой-либо элемент (лунки).

Каждая лунка уникальна и если выделена одному полю.

Лунка иметь много данных для каждого элемента (Info, Petro, Geo и Tests)

Все данные привязаны к сервису, который может добавлять и изменять.

Каждый сервис может управлять одними данными.

У каждой службы есть менеджер и несколько пользователей.

Я написал код, но не знаю, когда использую типы отношений. как ForeignKey, ManyToManyField ......

Мой код:

from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
from django.urls import reverse

# Create your models here.
class Fields(models.Model):
    Fieldname     = models.CharField(max_length=15)
    DiscoveredDate= models.DateField(max_length=4) #YYYY
    Mechanisms    = models.CharField(max_length=15)#
    OBSERVATION   = models.TextField()
    post_date     = models.DateTimeField(default=timezone.now)
    author        = models.ForeignKey(User,on_delete=models.CASCADE)
    def __str__(self):
        return self.Fieldname
    def get_absolute_url(self):
        return reverse('Fields', args=[self.pk])
    class Meta:
        ordering=('-post_date',)


class Wells(models.Model):
    WellID      = models.ManyToManyField(max_length=15,related_name='Fields') # or I use ForeignKey
    TYPE        = models.CharField(max_length=35)
    Startdate   = models.DateField(max_length=35)  # date with format mm-dd-YY
    EndDate     = models.DateField(max_length=15)   # date with format mm-dd-YY
    Duration    = models.IntegerField(max_length=4)   # enteger
    supervisor = models.CharField(max_length=30)
    OBSERVATION = models.TextField()
    post_date   = models.DateTimeField(default=timezone.now)
    author      = models.ForeignKey(User,on_delete=models.CASCADE)
    def __str__(self):
        return self.WellID
    def get_absolute_url(self):
        return reverse('Events', args=[self.pk])
    class Meta:
        ordering=('-post_date',)


class Info(models.Model):
    WellID    = models.ForeignKey(User)
    WelX      = models.CharField(max_length=15)
    WelY      = models.CharField(max_length=15)
    Nature    = models.CharField(max_length=15)
    Perimetre = models.CharField(max_length=15)
    def __str__(self):
        return self.WellID
    def get_absolute_url(self):
        return reverse('Infos', args=[self.pk])
    class Meta:
        ordering=('-post_date',)

class Geo(models.Model):
    WellID    =models.ForeignKey(User)
    Reservoire= models.CharField(max_length=15)
    Centre    = models.CharField(max_length=15)
    DSTinv    = models.CharField(max_length=15)
    DSTcomt   = models.TextField()

class Petro(models.Model):
    WellID    = models.ForeignKey(User)
    TOIT    = models.CharField(max_length=10)
    MUR     = models.CharField(max_length=10)
    post_date   = models.DateTimeField(default=timezone.now)
    author      = models.ForeignKey(User,on_delete=models.CASCADE)
    def __str__(self):
        return self.WellID
    def get_absolute_url(self):
        return reverse('WellDt', args=[self.pk]) 
    class Meta:
        ordering = ('-post_date',)

class Tests(models.Model):
    WellID    = models.ForeignKey(User)
    Test1     = models.IntegerField(max_length=10)
    Test2     = models.IntegerField(max_length=10)
    Test3     = models.IntegerField(max_length=10)
    Test_date     = models.DateField(max_length=10)
    post_date   = models.DateTimeField(default=timezone.now)
    author      = models.ForeignKey(User,on_delete=models.CASCADE)
    def __str__(self):
        return self.WellID
    def get_absolute_url(self):
        return reverse('WellDt', args=[self.pk])
    class Meta:
        ordering = ('-post_date',)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...