JSONField reference a model like One to One within the JSON












0














Stupid question time! :)



I don't think this is possible but I need to ask in case I'm wrong. Is it possible to create a one to one relationship to a normal Django model in the JSON of a JSONField?



Example:



Django Model (Example):



class TheModel(models.Model):
example = models.CharField(max_length=255)
something = models.CharField(max_length=255)
dt = models.DateTimeField()


Django model in separate app (Example):



class JsonModel(models.Model):
json_stuff = JSONField(default=list)


The JSON itself will be a list of dictionaries of will have multiple layers but some need to hold a reference to the TheModel to be presented in a template (the same way a One to One relationship would).



JSON (Example):



[{"title": "A Title", "body": [{"line": "Some text", "reference": TheModel}, {"line": "More Text", "reference": None }]}


It's looking like I'll have to loop through the JSON and insert the reference manually in the view.



Edit



Following on from @ruddra's comment. There is no consistancy in which TheModel is referenced. If there was I would have made a normal One to One relationship.



Please note that I'm asking if it's possible not what I need to do. I am already putting the id of TheModel where it needs to go I'm only curious to see is JSONField can do One to One in the same why Django does ForiegnKey fields in templates.










share|improve this question
























  • No, it's not possible in a high-level way, you just need to set the value to themodel_instance.id directly. Note that there's no "looping through the JSON" if you're using a JSONField you can access its properties directly as in any python dict.
    – dirkgroten
    Nov 23 '18 at 10:00












  • If you have consistency in json with the reference for the TheModel, then why don't you try to make it a FK with null True, so that it can be null able as well.
    – ruddra
    Nov 23 '18 at 11:01












  • @rudda Each reference will be to a different 'TheModel' int the database.
    – James Bellaby
    Nov 23 '18 at 11:39
















0














Stupid question time! :)



I don't think this is possible but I need to ask in case I'm wrong. Is it possible to create a one to one relationship to a normal Django model in the JSON of a JSONField?



Example:



Django Model (Example):



class TheModel(models.Model):
example = models.CharField(max_length=255)
something = models.CharField(max_length=255)
dt = models.DateTimeField()


Django model in separate app (Example):



class JsonModel(models.Model):
json_stuff = JSONField(default=list)


The JSON itself will be a list of dictionaries of will have multiple layers but some need to hold a reference to the TheModel to be presented in a template (the same way a One to One relationship would).



JSON (Example):



[{"title": "A Title", "body": [{"line": "Some text", "reference": TheModel}, {"line": "More Text", "reference": None }]}


It's looking like I'll have to loop through the JSON and insert the reference manually in the view.



Edit



Following on from @ruddra's comment. There is no consistancy in which TheModel is referenced. If there was I would have made a normal One to One relationship.



Please note that I'm asking if it's possible not what I need to do. I am already putting the id of TheModel where it needs to go I'm only curious to see is JSONField can do One to One in the same why Django does ForiegnKey fields in templates.










share|improve this question
























  • No, it's not possible in a high-level way, you just need to set the value to themodel_instance.id directly. Note that there's no "looping through the JSON" if you're using a JSONField you can access its properties directly as in any python dict.
    – dirkgroten
    Nov 23 '18 at 10:00












  • If you have consistency in json with the reference for the TheModel, then why don't you try to make it a FK with null True, so that it can be null able as well.
    – ruddra
    Nov 23 '18 at 11:01












  • @rudda Each reference will be to a different 'TheModel' int the database.
    – James Bellaby
    Nov 23 '18 at 11:39














0












0








0







Stupid question time! :)



I don't think this is possible but I need to ask in case I'm wrong. Is it possible to create a one to one relationship to a normal Django model in the JSON of a JSONField?



Example:



Django Model (Example):



class TheModel(models.Model):
example = models.CharField(max_length=255)
something = models.CharField(max_length=255)
dt = models.DateTimeField()


Django model in separate app (Example):



class JsonModel(models.Model):
json_stuff = JSONField(default=list)


The JSON itself will be a list of dictionaries of will have multiple layers but some need to hold a reference to the TheModel to be presented in a template (the same way a One to One relationship would).



JSON (Example):



[{"title": "A Title", "body": [{"line": "Some text", "reference": TheModel}, {"line": "More Text", "reference": None }]}


It's looking like I'll have to loop through the JSON and insert the reference manually in the view.



Edit



Following on from @ruddra's comment. There is no consistancy in which TheModel is referenced. If there was I would have made a normal One to One relationship.



Please note that I'm asking if it's possible not what I need to do. I am already putting the id of TheModel where it needs to go I'm only curious to see is JSONField can do One to One in the same why Django does ForiegnKey fields in templates.










share|improve this question















Stupid question time! :)



I don't think this is possible but I need to ask in case I'm wrong. Is it possible to create a one to one relationship to a normal Django model in the JSON of a JSONField?



Example:



Django Model (Example):



class TheModel(models.Model):
example = models.CharField(max_length=255)
something = models.CharField(max_length=255)
dt = models.DateTimeField()


Django model in separate app (Example):



class JsonModel(models.Model):
json_stuff = JSONField(default=list)


The JSON itself will be a list of dictionaries of will have multiple layers but some need to hold a reference to the TheModel to be presented in a template (the same way a One to One relationship would).



JSON (Example):



[{"title": "A Title", "body": [{"line": "Some text", "reference": TheModel}, {"line": "More Text", "reference": None }]}


It's looking like I'll have to loop through the JSON and insert the reference manually in the view.



Edit



Following on from @ruddra's comment. There is no consistancy in which TheModel is referenced. If there was I would have made a normal One to One relationship.



Please note that I'm asking if it's possible not what I need to do. I am already putting the id of TheModel where it needs to go I'm only curious to see is JSONField can do One to One in the same why Django does ForiegnKey fields in templates.







json django django-models django-jsonfield






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 23 '18 at 12:32







James Bellaby

















asked Nov 23 '18 at 9:46









James BellabyJames Bellaby

279




279












  • No, it's not possible in a high-level way, you just need to set the value to themodel_instance.id directly. Note that there's no "looping through the JSON" if you're using a JSONField you can access its properties directly as in any python dict.
    – dirkgroten
    Nov 23 '18 at 10:00












  • If you have consistency in json with the reference for the TheModel, then why don't you try to make it a FK with null True, so that it can be null able as well.
    – ruddra
    Nov 23 '18 at 11:01












  • @rudda Each reference will be to a different 'TheModel' int the database.
    – James Bellaby
    Nov 23 '18 at 11:39


















  • No, it's not possible in a high-level way, you just need to set the value to themodel_instance.id directly. Note that there's no "looping through the JSON" if you're using a JSONField you can access its properties directly as in any python dict.
    – dirkgroten
    Nov 23 '18 at 10:00












  • If you have consistency in json with the reference for the TheModel, then why don't you try to make it a FK with null True, so that it can be null able as well.
    – ruddra
    Nov 23 '18 at 11:01












  • @rudda Each reference will be to a different 'TheModel' int the database.
    – James Bellaby
    Nov 23 '18 at 11:39
















No, it's not possible in a high-level way, you just need to set the value to themodel_instance.id directly. Note that there's no "looping through the JSON" if you're using a JSONField you can access its properties directly as in any python dict.
– dirkgroten
Nov 23 '18 at 10:00






No, it's not possible in a high-level way, you just need to set the value to themodel_instance.id directly. Note that there's no "looping through the JSON" if you're using a JSONField you can access its properties directly as in any python dict.
– dirkgroten
Nov 23 '18 at 10:00














If you have consistency in json with the reference for the TheModel, then why don't you try to make it a FK with null True, so that it can be null able as well.
– ruddra
Nov 23 '18 at 11:01






If you have consistency in json with the reference for the TheModel, then why don't you try to make it a FK with null True, so that it can be null able as well.
– ruddra
Nov 23 '18 at 11:01














@rudda Each reference will be to a different 'TheModel' int the database.
– James Bellaby
Nov 23 '18 at 11:39




@rudda Each reference will be to a different 'TheModel' int the database.
– James Bellaby
Nov 23 '18 at 11:39












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53444162%2fjsonfield-reference-a-model-like-one-to-one-within-the-json%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53444162%2fjsonfield-reference-a-model-like-one-to-one-within-the-json%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Berounka

Sphinx de Gizeh

Different font size/position of beamer's navigation symbols template's content depending on regular/plain...