невозможно вставить внедренный документ в модель, используя django - PullRequest
0 голосов
/ 12 января 2020

Я не могу создать внедренный документ в модель, используя django, я использую djon go в качестве базы данных. Я постоянно повторяю, что мое значение должно быть экземпляром Model: <class 'django.db.models.base.Model'>, хотя Я создал все поля в модели. Мне действительно нужна помощь ....

моя модель:

class SMSHistory(models.Model):
    ThoiGian = models.DateField(default=datetime.date.today,null=True,blank=True)
    SoDienThoai = models.CharField(max_length=100,null=True,blank=True)
    SeriNo = models.CharField(max_length=100,null=True,blank=True)
    Count = models.IntegerField(default=0,null=True,blank=True)
class WebHistory(models.Model):
    ThoiGian = models.DateField(default=datetime.date.today,null=True,blank=True)
    DiaChiIP = models.CharField(max_length=100,null=True,blank=True)
    SoDienThoai = models.CharField(max_length=100,null=True,blank=True)
    SeriNo = models.CharField(max_length=100,null=True,blank=True)
    Count = models.IntegerField(default=0,null=True,blank=True)
class AppHistory(models.Model):
    ThoiGian = models.DateField(default=datetime.date.today,null=True,blank=True)
    DiaChiIP = models.CharField(max_length=100,null=True,blank=True)
    SoDienThoai = models.CharField(max_length=100,null=True,blank=True)
    SeriNo = models.CharField(max_length=100,null=True,blank=True)
    Count = models.IntegerField(default=0,null=True,blank=True)
class CallHistory(models.Model):
    ThoiGian = models.DateField(default=datetime.date.today,null=True,blank=True)
    SoDienThoai = models.CharField(max_length=100,null=True,blank=True)
    SeriNo = models.CharField(max_length=100,null=True,blank=True)
    Count = models.IntegerField(default=0,null=True,blank=True)
class History(models.Model):
    MaTem = models.CharField(max_length=100,null=True,blank=True)
    MaSP = models.CharField(max_length=100,null=True,blank=True)
    SMS = models.EmbeddedModelField(
        model_container = SMSHistory
    )
    App = models.EmbeddedModelField(
        model_container = AppHistory
    )
    Web = models.EmbeddedModelField(
        model_container = WebHistory
    )
    Call = models.EmbeddedModelField(
        model_container = CallHistory
    )

мои взгляды


    class check(View):
    def get(self,request):
        return render(request,'website/main.html')
    def post(self,request):
        matem=request.POST.get('txtCheck')
        print(matem)
        temp=khotemact.objects.filter(MaTem=matem)
        print(temp[0])
        tim=History.objects.filter(MaTem=temp[0].MaTem)
        if len(tim)==0:
            print('khong co')
            them=History.objects.create(MaTem=temp[0].MaTem,MaSP='123',
            SMS={'ThoiGian':'2010-1-1','SoDienThoai':'12324','SeriNo':'12343','Count':0},
            App={'ThoiGian':'2010-1-1','DiaChiIP':'1','SoDienThoai':'12324','SeriNo':'1236','Count':0},
            Web={'ThoiGian':'2010-1-1','DiaChiIP':'1','SoDienThoai':'12324','SeriNo':'1236','Count':0},
            Call={'ThoiGian':'2010-1-1','SoDienThoai':'1233','SeriNo':'123','Count':0}
            )
            them.save()
        else:
            print('co')
            # History.objects.filter(MaTem=temp[0].MaTem).update(Web={'Count':Count+1})
        return HttpResponse('oke')

я получил такую ​​ошибку


    ValueError at /website/check/
Value: {'ThoiGian': '2010-1-1', 'SoDienThoai': '12324', 'SeriNo': '12343', 'Count': 0} must be instance of Model: <class 'django.db.models.base.Model'>

спасибо

1 Ответ

0 голосов
/ 12 января 2020

Как говорит ошибка, вы должны использовать экземпляр модели, и вы используете dict

неправильно

SMS={'ThoiGian':'2010-1-1','SoDienThoai':'12324','SeriNo':'12343','Count':0}

правильно

SMS = SMSHistory.objects.create(ThoiGian='2010-1-1', SoDienThoai='12324',SeriNo='12343', Count=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...